Skip to content

Model picker redesign: compact rows, catalog-driven short names#4067

Open
SunkenInTime wants to merge 6 commits into
pingdotgg:mainfrom
SunkenInTime:redesign
Open

Model picker redesign: compact rows, catalog-driven short names#4067
SunkenInTime wants to merge 6 commits into
pingdotgg:mainfrom
SunkenInTime:redesign

Conversation

@SunkenInTime

@SunkenInTime SunkenInTime commented Jul 16, 2026

Copy link
Copy Markdown

What Changed

  • Redesigned model-picker rows with tighter spacing, clearer selected states, refined corner radii, and a theme-aware scrollbar.
  • Removed redundant provider labels in single-provider views while retaining them in favorites, search results, and sub-provider rows.
  • Added provider-authored short names for Codex and Claude models so the picker can show concise labels without rewriting custom or third-party model names.
  • Updated virtualized-list sizing and invalidation so rows render consistently when selection, favorites, search state, or provider context changes.
  • Added coverage for model-name formatting, Codex catalog parsing, and Claude short names.

Why

The picker repeated provider information that was already visible in the sidebar and displayed long catalog names that made the list harder to scan. Using provider-supplied short names and a more compact row layout makes model selection faster and clearer while preserving full names where they carry useful context.

Validation: vp check, vp run typecheck, and the full web unit suite (1,283 tests) pass.

UI Changes

Before

Video.Project.7.mp4

After

Video.Project.4.mp4

Checklist

  • This PR is small and focused
  • I explained what changed and why
  • I included before/after screenshots for any UI changes
  • I included a video for animation/interaction changes

Note

Low Risk
UI and display-metadata changes with unit tests; no auth, billing, or session runtime behavior changes.

Overview
Redesigns the model picker for faster scanning: tighter row spacing, blue-tinted selection, rounded-sm styling, and theme-aware pill scrollbars. Provider names on each row now show only in favorites, search, or when a sub-provider is set—not on single-provider sidebar tabs.

Adds provider-authored shortName values for built-in Claude models and derives Codex short labels via toCodexShortName (known GPT suffixes only; unknown/custom names stay unchanged). Display helpers move to modelDisplayNames.ts; the picker trigger always prefers short names through getDisplayModelName.

Fixes virtualized list staleness by bundling row state into LegendList extraData and tuning estimatedItemSize for one- vs two-line rows. Removes unused providerAccentColor / useTriggerLabel props from list rows.

Reviewed by Cursor Bugbot for commit 45f954f. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Redesign model picker rows with compact layout and catalog-driven short names

  • Adds a shortName field to built-in Claude models and derives short names for Codex models via a new toCodexShortName utility in CodexProvider.ts.
  • Extracts display name helpers into a dedicated modelDisplayNames.ts module and removes them from providerIconUtils.ts.
  • ModelPickerContent.tsx now passes preferShortName to rows, conditionally hides the provider line in single-provider tabs, and improves virtualization with stable extraData and adjusted item size estimates.
  • Updates model picker scrollbar styling in index.css to a theme-aligned inset pill thumb with Firefox fallback.

Macroscope summarized 45f954f.

SunkenInTime and others added 3 commits July 16, 2026 14:07
…selection styling

- Shorten display names in the picker (GPT-5.6-Sol -> 5.6 Sol, Claude Fable 5 -> Fable 5) via getModelPickerDisplayAlias, with unit tests
- Hide the per-row provider line on single-provider tabs (the sidebar already shows the provider); keep it for search, favorites, and sub-provider models
- Blue-tinted selected-row state, tighter row metrics (rounded-sm, text-sm)
- Fix LegendList stale-row renders by passing all row-render inputs through extraData instead of only favoritesSet
- Move the scrollbar styling class onto the actual LegendList scroll element; widen the scrollbar hit area with an inset pill thumb

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…talog

Replaces the web-layer regex aliasing with catalog-driven shortName:
- Claude built-in models get explicit shortName entries
- Codex derives shortName at model-list parse time (toCodexShortName),
  so discovered GPT models render as e.g. "5.6 Sol" / "5.5"
- Cursor/OpenCode/Grok models are intentionally left without shortName:
  their catalogs are dynamic multi-vendor lists
- Display-name helpers extracted from providerIconUtils to
  modelDisplayNames.ts; the picker-only alias regexes are deleted
- Picker rows always prefer shortName; extraData now carries
  filteredModelByKey and getModelDisabledReason so recycled rows
  cannot render stale disabled state

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Correctness/robustness:
- Size the virtualized row estimate at 60 when any filtered model has a
  subProvider (those rows render the two-line layout even in
  single-provider tabs), preventing first-paint mis-measurement
- Include toggleFavorite in LegendList extraData so recycled rows are
  invalidated by construction, not by favoritesSet changing in lockstep
- Read the selected-row key from listExtraData.activeModelKey instead of
  recomputing it inline
- Allow a fused version letter in toCodexShortName (GPT-4o -> "4o",
  GPT-4o-Mini -> "4o Mini") and cover the toDisplayName ->
  toCodexShortName chain with a parser-level test

Dead code removal (pre-existing, surfaced by review):
- Drop the getTriggerDisplayModelLabel pass-through alias and the
  never-true useTriggerLabel prop/branch in ModelListRow
- Remove the unused providerAccentColor/instanceAccentColor plumbing
- Collapse ProviderModelPicker's always-equal triggerLabel into
  triggerTitle

Styling:
- Model-picker scrollbar colors now track the theme border token via
  color-mix (dark-mode overrides removed), with a guarded
  scrollbar-width/scrollbar-color fallback so Firefox gets the shared
  thin treatment without disabling the WebKit inset pill

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@SunkenInTime
SunkenInTime marked this pull request as ready for review July 17, 2026 22:45
@coderabbitai

coderabbitai Bot commented Jul 17, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: e1e6d1af-436e-41b7-ba93-c96497c808d3

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added the size:L 100-499 changed lines (additions + deletions). label Jul 17, 2026
@macroscopeapp

macroscopeapp Bot commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a UI redesign with new display logic (short name derivation, conditional provider display, compact rows). While changes are well-tested, UI redesigns of this scope benefit from human review to ensure design intent and user experience are as intended.

You can customize Macroscope's approvability policy. Learn more.

macroscopeapp[bot]
macroscopeapp Bot previously approved these changes Jul 17, 2026
@github-actions github-actions Bot added the vouch:unvouched PR author is not yet trusted in the VOUCHED list. label Jul 17, 2026
@macroscopeapp
macroscopeapp Bot dismissed their stale review July 22, 2026 02:12

Dismissing prior approval to re-evaluate ce9893d

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Want fixes drafted automatically? Bugbot Autofix can create code changes for findings. A team admin can enable Autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit ce9893d. Configure here.

Comment thread apps/server/src/provider/Layers/CodexProvider.ts
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L 100-499 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant